package chap2_9;

import java.io.*;

/**
 * @author https://gitee.com/W_Jun
 * @date 2021-12-11 22:32
 * @Description 字节缓冲流案例-复制视频
 */
/*
* 四种方式实现复制视频，并记录每种方式复制视频的时间
* 1.基本字节流一次读写一个字节
* 2.基本字节流一次读写一个字节数组
* 3.字节缓冲流一次读写一个字节
* 4.字节缓冲流一次读写一个字节数组
* */
public class CopyAviDemo {
    public static void main(String[] args) throws IOException {
        //记录开始时间
        long startTime = System.currentTimeMillis();

        //复制视频
        method1();

        //记录结束时间
        long endTime = System.currentTimeMillis();
        System.out.println("共耗时：" + (endTime - startTime) + "毫秒");
    }

    //基本字节流一次读写一个字节
    public static void method1() throws IOException {
        FileInputStream fis = new FileInputStream("D:\\project\\视频.avi");
        FileOutputStream fos = new FileOutputStream("chapter02-字节流\\视频.avi");
        int by;
        while ((by = fis.read()) != -1) {
            fos.write(by);
        }
        fos.close();
        fis.close();
    }

    //基本字节流一次读写一个字节数组
    public static void method2() throws IOException {
        FileInputStream fis = new FileInputStream("D:\\project\\视频.avi");
        FileOutputStream fos = new FileOutputStream("chapter02-字节流\\视频.avi");
        int len;
        byte[] bys = new byte[1024];
        while ((len = fis.read(bys)) != -1) {
            fos.write(bys);
        }
        fos.close();
        fis.close();
    }

    //字节缓冲流一次读写一个字节
    public static void method3() throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\project\\视频.avi"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("chapter02-字节流\\视频.avi"));
        int by;
        while ((by = bis.read()) != -1) {
            bos.write(by);
        }
        bos.close();
        bis.close();
    }

    //字节缓冲流一次读写一个字节数组
    public static void method4() throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\project\\视频.avi"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("chapter02-字节流\\视频.avi"));
        byte[] bys = new byte[1024];
        int len;
        while ((len = bis.read(bys)) != -1) {
            bos.write(bys, 0, len);
        }
        bos.close();
        bis.close();
    }
}
